package com.itheima.factory;

import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 工厂类
 */
public class BeanFactory {
    //创建一个Properties集合
    private static Properties pro = new Properties();
    //创建一个容器储存bean对象,建为类名字符串，值为对象
    private static Map<String, Object> map = new HashMap<String, Object>();

    static {
        try {
            //读取配置文件
            InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
            //将配置文件里面的数据放到集合中
            pro.load(is);
            //获取集合内所有key
            Enumeration keys = pro.keys();

            while (keys.hasMoreElements()){
                //获取每个key
                String key = (String) keys.nextElement();
                //通过键得到每个值
                String val = pro.getProperty(key);
                //使用反射获取对象
                Object o = Class.forName(val).newInstance();
                //将对象放到集合中
                map.put(key,o);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Object getBean(String name){
        //输入类名获取对象
        return map.get(name);
    }
}
